perm filename INIT[MUS,LCS] blob
sn#331857 filedate 1978-02-02 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00007 00003 <FOUR INSTRUMENTS FOR ELEMENTRY COMPUTER MUSIC (+SIMP)
C00009 ENDMK
C⊗;
COMMENT: ******INITIALIZATION FILE FOR MUS10.DMP******** 10/77
***THIS IS STANFORD VERSION.
TO CREATE MUS10.DMP RUN COMMAND FILE, 'LMUS.CMD',
THEN READ IN THIS FILE BEFORE SAVING ON THE SYSTEM.
THE FOLLOWING FUNCTIONS ARE SET UP HEREIN:
SYNTH(ARRAY FUNC)
POWER( N, X ) [GIVES POWER OF N TO THE XTH] ;
NOMSG←1; < INHIBITS REPETITIVE MESSAGES
VARIABLE MAG,C,CF,CS,D,DF,DS,E,EF,ES,F,FF,FS,G,GF,GS,A,AF,AS,B,BF,BS;
C←261.62; CS←DF←277.18; D←293.66; DS←EF←311.13; E←FF←329.63;
F←ES←349.23; FS←GF←369.99; G←391.99; GS←AF←415.31;
A←440; AS←BF←466.16; B←493.89; CF←B/2; BS←C*2;
EXTERNAL FUNCTION ZDELAY(Input,Curlen,BufLen,ARRAY Buffer,Inptr),
SDELAY(DUMMY,Curlen,BufLen,ARRAY Buffer,Inptr),
SIND(A),COS(A),ZERO(ARRAY A), SIN(A), EXP(A), ALOG(A), SQRT(A),
SEG(ARRAY X),SYNTH(ARRAY Z),RDNUM(X), SEE(ARRAY Z);
FUNCTION POWER(X,N)=EXP(N*ALOG(X)); comment nth power of x;
<comment: type 'SETMAG; nchns, srate' ;
FUNCTION MAGERR(X);
BEGIN PRINT "IMPROPER INPUT. "; X←0;
print "Type number of channels and sample rate: ";
END;
FUNCTION ADJRATE; BEGIN
IF SRATE < 6400 THEN BEGIN
IF SRATE <8 THEN SRATE ← 6400; IF SRATE <10 THEN SRATE ← 8000;
IF SRATE <12 THEN SRATE ← 10000; IF SRATE <16 THEN SRATE ← 12800;
IF SRATE <20 THEN SRATE ← 16000; IF SRATE <25 THEN SRATE ← 20000;
IF SRATE <32 THEN SRATE ← 25600; IF SRATE <40 THEN SRATE ← 32000;
IF SRATE <50 THEN SRATE ← 40000; IF SRATE <60 THEN SRATE ← 51200;
IF SRATE <80 THEN SRATE ← 64000; IF SRATE <100 THEN SRATE ← 80000;
IF SRATE <120 THEN SRATE ← 102400; IF SRATE <130 THEN SRATE ← 128000;
IF SRATE <200 THEN SRATE ← 160000; IF SRATE <220 THEN SRATE ← 204800;
IF SRATE <260 THEN SRATE ← 256000; IF SRATE <4000 THEN SRATE ← 10000;
COMMENT: YOU MAY TYPE 1 OR 12 FOR 12800, ETC. 10000=10000;
END; END;
Function SETMAG;
begin
VARIABLE X; X←0;
WHILE X = 0 DO
BEGIN X←1; rdnum(nchns); rdnum(srate);
IF NCHNS > 4 THEN MAGERR(X);
IF NCHNS = 3 THEN MAGERR(X);
IF NCHNS < 1 THEN MAGERR(X);
ADJRATE;
COMMENT: ONLY 6400, 12800, ETC. ARE ACCEPTED;
COMMENT: IF INT(SRATE/6400+.1) } SRATE/6400 THEN MAGERR(X);
END;
MAG←512/srate;
PRINT "NCHNS=",NCHNS," SRATE=",SRATE ;
end;
<SRATE←12800;MAG←512/SRATE;NCHNS←1;
SETMAG; 1 12800;
<FOUR INSTRUMENTS FOR ELEMENTRY COMPUTER MUSIC (+SIMP)
INSTRUMENT SIMP;
OUTA←OUTA+ZOSCIL(P4,MAG*P3,P5);
END;
INSTRUMENT TOOT;
FOSCIL[10](P4,10*MAG/P2,P5);
COSCIL(U1,P3*MAG,P6);<P6 IS TONE COLOR FOR 'TOOT'
OUTA←OUTA+U2;END;
INSTRUMENT CLAR;
FOSCIL[10](P4,10*MAG/P2,P5);
COSCIL(U1,P3*MAG,P7);< P7 IS TONE COLOR FOR 'CLAR'
OUTA←OUTA+U2;END;
INSTRUMENT BRIT;
FOSCIL[10](P4,10*MAG/P2,P5);
COSCIL(U1,P3*MAG,P8);< P8 IS TONE COLOR FOR 'BRIT'
OUTA←OUTA+U2;END;
INSTRUMENT BUZZ;
FOSCIL[10](P4,10*MAG/P2,P5);
COSCIL(U1,P3*MAG,P9);< P9 IS TONE COLOR FOR 'BUZZ'
OUTA←OUTA+U2;END;
<NOMSG←0;
ARRAY F1,F2,F3,F4,F5,F6(512);
SYNTH(F1);1 1 999; < TOOT - SINE WAVE (USED FOR SIMP ALSO)
SEG(F2);.9 6,1 11 .9 82 .7 90 0 100; < MEZZO LEGATO
SEG(F3);1 3,1 10,.4 23,.15 40,0 100; < STACCATO
SYNTH(F4);1,.5 3,.3 5,.2 7,.1 999; < CLAR
SYNTH(F5);1,.3 2,.4 3,.2 8,.2 12 .1 999; < BRIT
SEG(F6);-1,1 1,7 -1,14 -1,100; < BUZZ
<NOMSG←1;
OUTFILE←"TEST.SND"; <SETS UP DEFAULT OUTPUT FILE NAME. (BITS←12;)
PLAY;TOOT 0 .12 C 1000 F2 F1 F4 F5 F6 0;
CLAR .12;BRIT .24;BUZZ .36;
PLAY;SIMP 0 .5 A 1000 F1;FINISH;